//=============================================================================
//文件名称：红薯科创开源物联网系统
//功能概要：实现嵌入式设备1分钟上云,这个程序中不检测模组开机电压了
//版权所有：红薯科创
//作者： 王展
//版权更新：2020.12.6
//调试方式：J-Link OB ARM SW方式 5MHz
//=============================================================================

//头文件
#include "stm32f10x.h"
#include "stdio.h"
#include "stdarg.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"
#include "usart1.h"
#include "usart2.h"
#include "systick.h"
#include "nbadc.h"
#include "iic.h"
#include "motoradc.h"
#include "hmc5883l.h"
#include "gpio.h"
#include "extinb.h"
#include "stm32f10x_conf.h"
unsigned char IsHaveCar = 0;
unsigned char Hmcstart = 0;//状态标志位,初始化不检测
unsigned char batteryup = 0;//电池电压上传标志位，初始化不上传电压
int batteryupcnt = 0;
extern unsigned char IsLocking;
extern u8 ucM5311StsManage;
extern char wod;//串口一接收到的通讯数据
extern double magnectic_data;
extern double angle;//引用外部角度数据
extern int x,y,z;
extern double dat[200];
extern double sumDatVal;//取样集的元素之和
extern char Usart1_Rx_Buf[USART1_RBUFF_SIZE];

extern int cnt;
	

	

int main(void)
{ 	
	SystemInit();
	float ADC_ConvertedValue;
	float ADC_ConvertedValueLocal;//检测模组针脚电压
	float ADC_ConvertedValue2;
	float ADC_ConvertedValueLocal2;	//电机堵转电压采集	
	int MOTOR_AdcCnt = 0;//电机堵转次数阈值

//	SENSOR_GPIO_Config();//触发脉冲管脚初始化
//	jiguangconfing();//磁力计管脚初始化
//	POWER_KEY_GPIO_Config();//模组以及电机管脚初始化
	POWER_KEY2_GPIO_Config();
//	LEDT_GPIO_Config();
	usart_init();//串口1初始化
	usart2_init();//串口2初始化
//	Motoroverloadcheckconfig();//电机堵转电压ADC采集初始化
//	Adc_Config();//模组ADC电压采集初始化
//	I2C_INIT();//磁力计iic初始化
//	delay_us(1000);
//	Init_HMC5883();//磁力计初始化
//	delay_us(2000);
//	pingjundate();
//	Debug_fmt("sumDatVal:%f\r\n",sumDatVal);
	Moudle_OpeningPower();//无论如何先初始化开机
//Debug_fmt("have a car !\r\n");

//LEDT_GPIO_Config();
//MOTOR1_GPIO_Config();//09	
//MOTOR2_GPIO_Config();//21
//MOTOR3_GPIO_Config();//22
//MOTOR4_GPIO_Config();//23





	while(1)
		{
			

//			/*激磁力计开始*/
//		

//			
//			Multiple_read_HMC5883();

		//		delay_ms(100);//增加时间，防止脉冲变化干扰
//	//			Debug_fmt("sumDatVal:%f\r\n",sumDatVal);
//			if(abs((int)sumDatVal-abs((int)magnectic_data))>50)
//			{ 
//				
//					Debug_fmt("have a car !\r\n");
//						IsHaveCar = 1;
//				
//				
//			}else{
////			delay_ms(5000);
////			delay_ms(5000);
////			delay_ms(5000);//延迟一会，给汽车离开一个时间
//				
	//						Debug_fmt("don't have a car !\r\n");
//							IsHaveCar = 0;
//					if(IsHaveCar==0 && IsLocking==0)
//							{
//								//如果锁上方没车 并且 锁是躺着的 就让锁立起来
//								//如果没车并且没锁上既锁是躺着的，就让锁立起来
//									//PC14拉低 PC15拉高 电机关
//								
//								GPIO_WriteBit(GPIOB, GPIO_Pin_13,0);
//								GPIO_WriteBit(GPIOB, GPIO_Pin_12,1);
//								IsLocking = 1;
//							//	DebugInfoStr("@@@@@@@@@@@@@@@@@@ Close!\r\n");
//								ucM5311StsManage =7;//车走就变7，跳到case7去等待脉冲脉冲完跳到case3继续等待
//								
//							}

//							
//				  }
// 
//		 
//				
//						/*激磁力计结束*/
//				
//				

//				
//				
//				
//				
//				
//						

//				
//				
//			
//			
//				
//				
//				//Motor堵转电压采集
//			ADC_SoftwareStartConvCmd(ADC2, ENABLE);		//启动转换
//        while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC ));  //等待转换完成，完成之后置1既跳出while循环

//        ADC_ConvertedValue2=ADC_GetConversionValue(ADC2); //获取转换结果*ADC_ConvertedValue*
//        ADC_ConvertedValueLocal2=(float)ADC_ConvertedValue2*(3.3/4096);   //计算出实际电压值*ADC_ConvertedValueLocal*
//				
//				//如果采集到的电压数在200-300mv之间就停转
//				Debug_fmt("MOTOR_Adc:%f\r\n",ADC_ConvertedValueLocal2);//输出dianjidianya
//			if(ADC_ConvertedValueLocal2>0.2)
//			{	MOTOR_AdcCnt++;
//				if(MOTOR_AdcCnt>50){//累加到50个既判定为堵转状态
//									GPIO_WriteBit(GPIOB, GPIO_Pin_13,0);
//									GPIO_WriteBit(GPIOB, GPIO_Pin_12,0);
//				//让锁放下，并且上报数据，然后关闭激光自检
//									GPIO_WriteBit(GPIOB, GPIO_Pin_13,1);
//									GPIO_WriteBit(GPIOB, GPIO_Pin_12,0);
//				delay_ms(2000);
//									GPIO_WriteBit(GPIOB, GPIO_Pin_13,0);
//									GPIO_WriteBit(GPIOB, GPIO_Pin_12,0);				
//				
//		//						PrintfAtCmdNoCheckAck("AT+MIPLNOTIFY=0,0,3200,0,5750,1,14,\"Closedactionfailed\",0,0\r\n");
//			ucM5311StsManage = 3;
//				MOTOR_AdcCnt = 0;
//				Hmcstart = 0;}
//			} 
//			else{
//			MOTOR_AdcCnt = 0;
//			}

//			
//			
//	


//			
//			
//			
//			
//			
//			
////上传电池电压		
//		  ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//启动转换
//        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));  //等待转换完成，完成之后置1既跳出while循环

//        ADC_ConvertedValue=ADC_GetConversionValue(ADC1); //获取转换结果*ADC_ConvertedValue*
//        ADC_ConvertedValueLocal=(float)ADC_ConvertedValue*(3.3/4096);   //计算出实际电压值*ADC_ConvertedValueLocal*
//					Debug_fmt("%d\r\n",ADC_ConvertedValueLocal);
//		//	sprintf();
//				if(batteryup)
//				{
//					batteryupcnt++;
//					if(batteryupcnt>0x7FFF*24)
//					{
//					
//						if(NBiot_Fmetd(2000,5,"OK","AT+MIPLNOTIFY=0,0,3200,0,5750,1,1,\"CurrentPower:%f\",0,0\r\n",ADC_ConvertedValueLocal))
//						{clearbufrecv();
//						Debug_fmt("battery up success!\r\n");
//							batteryupcnt = 0;
//						}
//						else
//						{
//						clearbufrecv();
//						Debug_fmt("battery up failed\r\n!");
//						
//						}
//					}
//				}

				
				
				
				
				
				
//				if(batteryup)
//				{
//					Debug_fmt("\r\n go stop mode\r\n");

//					exti_init();//外部中断配置
////					system_enter_stop();//进入STOP模式
//					 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);//使能PWR外设时钟

//        PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //进入stop模式中断唤醒
//					SystemInit();
//exti_init();//外部中断配置
//					
////唤醒后初始化所有外设		
//				
//	SENSOR_GPIO_Config();//触发脉冲管脚初始化
//	jiguangconfing();//磁力计管脚初始化
//	POWER_KEY_GPIO_Config();//模组以及电机管脚初始化
//	usart_init();//串口1初始化
//	usart2_init();//串口2初始化
//	Motoroverloadcheckconfig();//电机堵转电压ADC采集初始化
//	Adc_Config();//模组ADC电压采集初始化
//	I2C_INIT();//磁力计iic初始化
//	delay_us(1000); 
//	Init_HMC5883();//磁力计初始化
//	delay_us(2000); 
////	pingjundate();
//	Debug_fmt("sumDatVal_openstop:%f\r\n",sumDatVal);
//	Debug_fmt("LEAVE STOP\r\n");	
////	Moudle_OpeningPower();//无论如何先初始化开机

//					
//				}


//				GPIO_WriteBit(GPIOB,GPIO_Pin_6,0);//GPIO_WriteBit(GPIOA,GPIO_Pin_6,1);

	//					Delaymotor_mss(6000);

					//	GPIO_WriteBit(GPIOB,GPIO_Pin_6,1); 
//GPIO_SetBits(GPIOA, GPIO_Pin_1);	

////GPIO_WriteBit(GPIOB,GPIO_Pin_6,0); 

//		Delaymotor_mss(6000);
	
								//进入模组控制
					//			Debug_fmt("\r\n go\r\n");
					Delaymotor_mss(1000);
				GPRS_Controller();  

//Debug_fmt("HELOO SUCCESS FOR YOU WZ !\r\n");
//GPIO_ResetBits(GPIOA, GPIO_Pin_1);
//Delaymotor_mss(1000);
//GPIO_SetBits(GPIOA, GPIO_Pin_1);				
//Delaymotor_mss(1000);  



//		GPIO_SetBits(GPIOA, GPIO_Pin_6);	
//	GPIO_ResetBits(GPIOA, GPIO_Pin_7);	
//	
//	Delaymotor_mss(6000);  
//	
//	GPIO_ResetBits(GPIOA, GPIO_Pin_6);	
//	GPIO_ResetBits(GPIOA, GPIO_Pin_7);
//	
//	Delaymotor_mss(6000); 
		}
		
		
	
					
}
